package com.racetime.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * @author : Ice'Clean
 * @date : 2021-05-29
 *
 * 有关 json 数据处理的工具类
 */
public class JsonUtil {
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 工具类构造器私有化
     */
    private JsonUtil() {

    }

    /**
     * 将目标对象转化成 json 字符串
     * @param object 目标实例对象
     * @return 对象对应的 json 字符串
     */
    public static String changeToJson(Object object) throws JsonProcessingException {
        return MAPPER.writeValueAsString(object);
    }

    /**
     * 往 json 字符串种添加数据
     * @param dataName 要添加数据的名称
     * @param dataContent 数据对应的内容
     * @return 添加完指定数据后的 json 字符串
     */
    public static String addData(String json, String dataName, String dataContent) {
        // 拼接 json
        return new StringBuilder().append(json).insert(1, "\""+ dataName +"\":\"" + dataContent + "\",").toString();
    }

    /**
     * 默认带一个字段在对象信息前面的 json 字符串
     * @param object 目标对象
     * @param dataName 所带字段名
     * @param dataContent 所带字段内容
     * @return 带默认字段的 json 对象
     */
    public static String dataJson(Object object, String dataName, String dataContent) throws JsonProcessingException {
        return addData(changeToJson(object), dataName, dataContent);
    }
}
